home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / RCCONST.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1997-01-29  |  5.4 KB  |  199 lines

  1. 10  'RCCONST - 15 APR 92 rev. 27 SEP 96
  2. 20  IF EX$=""THEN EX$="EXIT"
  3. 30  IF PROG$=""THEN GO$=EX$ ELSE GO$=PROG$
  4. 40  COMMON EX$
  5. 50  CLS:KEY OFF
  6. 60  COLOR 7,0,1
  7. 70  LB=2.718                               'natural log base
  8. 80  U$="######,###.###"
  9. 90  U0$="######,###.#"
  10. 100  U1$="#,###.###"
  11. 110  U2$="#####,###.#"
  12. 120  U3$="#,###.#"
  13. 130  UL$=STRING$(80,205)
  14. 140  E$=STRING$(80,32)
  15. 150  T$=" RC CONSTANT"+STRING$(44,32)+"by George Murphy VE3ERP "
  16. 160  '
  17. 170  '.....start
  18. 180  VIEW PRINT:CLS:E#=0:R#=0:C#=0:T#=0
  19. 190  COLOR 15,2
  20. 200  PRINT T$;
  21. 210  COLOR 1,0:PRINT STRING$(80,223);
  22. 220  COLOR 7,0
  23. 230  GOTO 360
  24. 240  '
  25. 250  '.....schematic
  26. 260  COLOR 0,7
  27. 270  LOCATE Y+1,X:PRINT "       R        "
  28. 280  LOCATE Y+2,X:PRINT " E SOUNDSOUND\/\/\SOUNDSOUNDBSAVE V "
  29. 290  LOCATE Y+3,X:PRINT "            CALL   "
  30. 300  LOCATE Y+4,X:PRINT "          CTHENINSTRTHEN  "
  31. 310  LOCATE Y+5,X:PRINT "            CALL   "
  32. 320  LOCATE Y+6,X:PRINT " - SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDMOTOR   "
  33. 330  COLOR 7,0
  34. 340  RETURN
  35. 350  '
  36. 360  '.....print schematic
  37. 370  X=33:Y=2:GOSUB 250
  38. 380  PRINT UL$;
  39. 390  PRINT
  40. 400  '
  41. 410  '.....print text
  42. 420  TB=8            'tab for text
  43. 430  GOSUB 1720      'text block
  44. 440  PRINT
  45. 450  PRINT UL$;
  46. 460  COLOR 0,7:LOCATE CSRLIN,22:PRINT " Press 1 to continue or 0 to EXIT....."
  47. 470  COLOR 7,0
  48. 480  Z$=INKEY$:IF Z$=""THEN 480
  49. 490  IF Z$="0"THEN CLS:CHAIN GO$
  50. 500  IF Z$="1"THEN 530
  51. 510  GOTO 480
  52. 520  '
  53. 530  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  54. 540  '.....inputs
  55. 550  '..E# = potential of charging source in volts
  56. 560  IF E#=0 THEN GOSUB 730
  57. 570  IF E#=0 THEN INPUT " ENTER: Input voltage...............E= ";E#:GOSUB 780
  58. 580  '..R# = series resistance
  59. 590  IF R#=0 THEN GOSUB 730
  60. 600  IF R#=0 THEN INPUT " ENTER: Resistance in ohms..........R= ";R#:GOSUB 780
  61. 610  '..C# = capacity in farads
  62. 620  IF C#=0 THEN GOSUB 730
  63. 630  IF C#=0 THEN INPUT " ENTER: Capacitance (>F)........... C= ";C
  64. 640  IF C#=0 AND C>0 THEN C#=C/1E+06:GOSUB 780
  65. 650  '..T# = Time constant in seconds
  66. 660  IF T#=0 THEN GOSUB 730
  67. 670  IF T#=0 THEN INPUT " ENTER: Time constant in seconds...RC= ";T#:GOSUB 780
  68. 680  '
  69. 690  IF R#>0 AND C#>0 AND E#>0 AND V#>0 AND T#>0 THEN 850  'all data OK
  70. 700  VIEW PRINT 10 TO 24:CLS:VIEW PRINT:LOCATE 10
  71. 710  GOTO 530               'go back for more data
  72. 720  '
  73. 730  LOCATE CSRLIN+1
  74. 740  PRINT " (Press ENTER if unknown....)"
  75. 750  LOCATE CSRLIN-2
  76. 760  RETURN
  77. 770  '
  78. 780  '.....compile input data
  79. 790  IF T#=0 AND R#>0 AND C#>0 THEN T#=R#*C#:RETURN
  80. 800  IF R#=0 AND C#>0 AND T#>0 THEN R#=T#/C#:RETURN
  81. 810  IF C#=0 AND R#>0 AND T#>0 THEN C#=T#/R#:RETURN
  82. 820  IF V#=0 AND E#>0 THEN V#=E#*(1-LB^-1):RETURN
  83. 830  RETURN
  84. 840  '
  85. 850  '.....display
  86. 860  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  87. 870  PRINT " Time constant.............. RC =";USING U$;T#;
  88. 880  PRINT " seconds"
  89. 890  PRINT " Input voltage............... E =";USING U0$;E#;
  90. 900  PRINT "   volts"
  91. 910  PRINT " Resistor.................... R =";USING U0$;R#;
  92. 920  PRINT "   ohms"
  93. 930  PRINT " Capacitor................... C =";USING U0$;C#*1E+06;
  94. 940  PRINT "   >F"
  95. 950  PRINT UL$;
  96. 960  '....
  97. 970  N=4*T#/16            'divide (3 x time constant) into 16 increments
  98. 980  SEC=0                'start at zero seconds
  99. 990  FOR Z=1 TO 16
  100. 1000  IF Z=4 OR Z=8 OR Z=12 OR Z=16 THEN COLOR 0,7 ELSE COLOR 7,0
  101. 1010    SEC=SEC+N            'time in seconds after initiating charging current
  102. 1020    EMF=E#*(1-LB^(-SEC/T#))
  103. 1030    PRINT " EMF at V after ";USING U1$;SEC;
  104. 1040    PRINT " sec.  =";USING U0$;EMF;:PRINT " v.  ";
  105. 1050  IF Z=16 THEN PRINT " (";Z/4;"x RC )";:GOTO 1070
  106. 1060  IF Z=4 OR Z=8 OR Z=12 THEN PRINT " (";Z/4;"x RC )" ELSE PRINT ""
  107. 1070  NEXT Z
  108. 1080  COLOR 7,0
  109. 1090  X=64:Y=7:GOSUB 250    'print schematic
  110. 1100  GOSUB 1860
  111. 1110  '
  112. 1120  '.....substitution option
  113. 1130  LOCATE 25,1:PRINT E$;:LOCATE 25,1
  114. 1140  COLOR 0,7
  115. 1150  PRINT " Do you want to substitute other values for R or C?    (y/n) ";
  116. 1160  COLOR 7,0
  117. 1170  Z$=INKEY$
  118. 1180  IF Z$="y"OR Z$="Y"THEN 1220
  119. 1190  IF Z$="n"OR Z$="N"THEN 1320
  120. 1200  GOTO 1170
  121. 1210  '
  122. 1220  '.....substitute R or C
  123. 1230  COLOR 15,6
  124. 1240  LOCATE 25,1
  125. 1250  PRINT " Which component do you want to change, R or C?        (r/c) ";
  126. 1260  COLOR 7,0
  127. 1270  Z$=INKEY$
  128. 1280  IF Z$="R"OR Z$="r"THEN R#=0:T#=0:GOTO 530
  129. 1290  IF Z$="C"OR Z$="c"THEN C#=0:T#=0:GOTO 530
  130. 1300  GOTO 1270
  131. 1310  '
  132. 1320  '.....display discharge option
  133. 1330  COLOR 15,6
  134. 1340  LOCATE 25,1
  135. 1350  PRINT " Do you want to display a Discharge Rate table?        (y/n) ";
  136. 1360  COLOR 7,0
  137. 1370  Z$=INKEY$
  138. 1380  IF Z$="n"OR Z$="N"THEN 170
  139. 1390  IF Z$="y"OR Z$="Y"THEN 1420
  140. 1400  GOTO 1370
  141. 1410  '
  142. 1420  '.....display discharge times
  143. 1430  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  144. 1440  PRINT " Discharge rate of a  ";:PRINT USING U2$;C#*1E+06;
  145. 1450  PRINT " >F capacitor"
  146. 1460  PRINT " with a full charge of";:PRINT USING U2$;E#;
  147. 1470  PRINT " volts"
  148. 1480  PRINT " discharging through a";:PRINT USING U2$;R#;
  149. 1490  PRINT " - resistor:";
  150. 1500  PRINT TAB(49);"Time Constant RC =";USING U1$;T#;:PRINT " sec.";
  151. 1510  PRINT UL$;
  152. 1520  SEC=0                'start at zero seconds
  153. 1530  PRINT " Capacitor EMF at start";TAB(37);"=";USING U3$;E#;:PRINT " v."
  154. 1540  FOR Z=1 TO 16
  155. 1550   IF Z=4 OR Z=8 OR Z=12 OR Z=16 THEN COLOR 0,7 ELSE COLOR 7,0
  156. 1560   SEC=SEC+N            'time in seconds after initiating charging current
  157. 1570   V=E#*(LB^(-SEC/T#))                   'EMF of capacitor
  158. 1580   MA=V/R#*1000                          'current in mA
  159. 1590   V$="#####.###"
  160. 1600   IF MA>0.01 THEN V$="#####.##"
  161. 1610   IF MA>0.1 THEN V$="#####.#"
  162. 1620   IF MA>1 THEN V$="#####"
  163. 1630   PRINT " Discharge rate after ";USING U3$;SEC;
  164. 1640   PRINT " sec.  =";USING U3$;V;:PRINT " v.@";USING V$;MA;:PRINT " mA.";
  165. 1650   IF Z=16 THEN PRINT " (";Z/4;"x RC )";:GOTO 1670
  166. 1660   IF Z=4 OR Z=8 OR Z=12 THEN PRINT " (";Z/4;"x RC )" ELSE PRINT ""
  167. 1670  NEXT Z
  168. 1680  COLOR 7,0
  169. 1690  GOSUB 1860
  170. 1700  GOTO 170   'start
  171. 1710  '
  172. 1720  '.....text block
  173. 1730  PRINT TAB(TB);
  174. 1740  PRINT "The product of R in ohms times C in farads is called the Time"
  175. 1750  PRINT TAB(TB);
  176. 1760  PRINT "Constant of the circuit and is the time in seconds required to"
  177. 1770  PRINT TAB(TB);
  178. 1780  PRINT "charge the capacitor C to 63.2% of the supply voltage E."
  179. 1790  PRINT
  180. 1800  PRINT TAB(TB);
  181. 1810  PRINT "If a charged capacitor is discharged through a resistor the same"
  182. 1820  PRINT TAB(TB);
  183. 1830  PRINT "time constant applies for the decay of the capacitor voltage V."
  184. 1840  RETURN
  185. 1850  '
  186. 1860  'HARDCOPY
  187. 1870  GOSUB 1980:LOCATE 25,2:COLOR 14,6
  188. 1880  PRINT " Press 1 to print screen, 2 to print screen & ";
  189. 1890  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  190. 1900  Z$=INKEY$:IF Z$="3"THEN GOSUB 1980:RETURN
  191. 1910  IF Z$="1"OR Z$="2"THEN GOSUB 1980:GOTO 1930
  192. 1920  GOTO 1900
  193. 1930  FOR QX=1 TO 24:FOR QY=1 TO 80
  194. 1940  LPRINT CHR$(SCREEN(QX,QY));
  195. 1950  NEXT QY:NEXT QX
  196. 1960  IF Z$="2"THEN LPRINT CHR$(12)
  197. 1970  GOTO 1870
  198. 1980  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  199.